#include "../include/longin.h"

//日志
FILE *logFile = NULL;

// 初始化日志文件
void initLogFile(void)
{
    // 以追加模式打开日志文件，如果文件不存在则创建
    logFile = fopen(LOG_FILE, "a");
    if (!logFile) {
        // 如果无法打开日志文件，向标准错误输出错误信息
        fprintf(stderr, "Unable to open log file: %s\n", LOG_FILE);
    }
}

// 写入日志的函数
void logMessage(LogLevel level, const char *format, ...) 
{
    if (!logFile) 
        return;  // 如果日志文件未打开，则返回

    // 获取当前时间
    time_t now;
    time(&now);
    struct tm *local = localtime(&now);

    // 定义日志级别字符串
    const char *levelStrings[] = {"ERROR", "WARNING", "INFO", "DEBUG"};
    
    // 写入时间戳和日志级别到日志文件
    fprintf(logFile, "[%02d-%02d-%04d %02d:%02d:%02d] [%s] ", 
            local->tm_mday, local->tm_mon + 1, local->tm_year + 1900, 
            local->tm_hour, local->tm_min, local->tm_sec, 
            levelStrings[level]);

    // 处理可变参数并写入日志文件
    va_list args;
    va_start(args, format);
    vfprintf(logFile, format, args);
    va_end(args);

    // 换行并刷新缓冲区，确保日志及时写入文件
    fprintf(logFile, "\n");
    fflush(logFile);
}

// 关闭日志文件
void closeLogFile(void) 
{
    if (logFile) {
        fclose(logFile);  // 关闭日志文件
        logFile = NULL;   // 将文件指针置空
    }
}